Dateien teilen auf die smarte Art: Plik selbst hosten mit Docker
82 % der Menschen verwenden unsichere File-Sharing-Tools.
Dabei geht’s auch anders – schnell, modern, selbstbestimmt.
Wenn du Plik nutzt, behältst du die Kontrolle – ohne auf Komfort verzichten zu müssen.
Ich zeige dir heute, wie du Plik ganz einfach mit Docker selbst betreibst – inklusive Web-Upload, curl
-Support und sogar Streaming ohne Zwischenspeicherung.
Ob für dich selbst, dein Team oder im Internet.
🔍 Was ist Plik – und warum solltest du es nutzen?
Plik ist ein Open-Source-Dateiübertragungsdienst, den du selbst hosten kannst.
Er bietet eine schöne Web-Oberfläche, aber auch eine einfache API und curl
-Support. Perfekt also für Power-User und Endanwender zugleich.
Was Plik besonders macht:
- Keine Anmeldung nötig (optional möglich)
- Dateien laufen über deinen eigenen Server
- Lebensdauer, Passwortschutz, Streaming – alles mit an Bord
- Der Dienst kann Dateien auch direkt von A nach B streamen, ohne sie zu speichern!
Wenn du bisher auf Tools wie WeTransfer oder File.io angewiesen warst, dann ist Plik eine super Alternative.
🐳 Schritt 1: Plik via Docker bereitstellen
Du brauchst nichts weiter als eine funktionierende Docker-Umgebung.
Erstelle dir z. B. folgende docker-compose.yaml
:
services: plik: image: rootgg/plik:latest container_name: plik-app hostname: plik-app user: "1000:1000" ports: - "3000:3000" volumes: - ./data/files:/home/plik/server/files - ./data/plikd.cfg:/home/plik/server/plikd.cfg:ro - ./data/background1.jpg:/home/plik/webapp/dist/img/background.jpg:ro environment: - PLAK_DISABLE_AUTHENTICATION=false - PLAK_DEBUG=true - PLAK_DEFAULT_TTL=30d restart: unless-stopped
- ./data/background1.jpg:/home/plik/webapp/dist/img/background.jpg:ro
Optional: Mit dieser Zeile bindest du ein eigenes Hintergrundbild für das Webinterface von Plik ein.
Das Bild (background1.jpg
) ersetzt den Standardhintergrund und sorgt für einen individuellen Look deiner File-Sharing-Seite.
So kannst du z. B. dein Logo, CI-Farben oder ein dezentes Design hinterlegen.
🔧 Tipp: Das Bild sollte im Format JPG oder PNG vorliegen und ca. 1920×1080 px groß sein.
Wenn du das nicht brauchst, kannst du diese Zeile einfach weglassen – Plik verwendet dann den Standardhintergrund.
⚙️ Schritt 2: Konfiguration
Die Konfigurationsdatei (plikd.cfg
) ist das Herzstück.
Hier legst du Dinge wie Logging, Features, Download-Domain und Limits fest.
Erstelle die Konfigurationsdatei unter ./data/plikd.cfg
und bearbeite sie:
# ─── Logging ─────────────────────────────────────────── Debug = true DebugRequests = true LogLevel = "INFO" # ─── Netzwerk ────────────────────────────────────────── ListenPort = 3000 ListenAddress = "0.0.0.0" MetricsPort = 0 MetricsAddress = "0.0.0.0" Path = "" # SSL im Reverse Proxy, daher hier aus SslEnabled = false EnhancedWebSecurity = true TlsVersion = "tlsv12" # ─── Web Interface ───────────────────────────────────── NoWebInterface = false DownloadDomain = "https://share.domain.com" DownloadDomainAlias = ["https://share.domain.com"] WebappDirectory = "../webapp/dist" AbuseContact = "abuse@domain.com" SessionTimeout = "365d" # ─── Upload Einschränkungen ─────────────────────────── UploadWhitelist = [] MaxFileSizeStr = "10GB" MaxUserSizeStr = "unlimited" MaxFilePerUpload = 100 DefaultTTLStr = "30d" MaxTTLStr = "90d" # ─── Feature Flags ───────────────────────────────────── FeatureAuthentication = "disabled" FeatureOneShot = "enabled" FeatureRemovable = "enabled" FeatureStream = "enabled" FeaturePassword = "enabled" FeatureComments = "enabled" FeatureSetTTL = "enabled" FeatureExtendTTL = "disabled" FeatureClients = "enabled" FeatureGithub = "enabled" FeatureText = "enabled" # ─── Daten-Backend ───────────────────────────────────── DataBackend = "file" [DataBackendConfig] Directory = "files" # ─── Metadaten-Backend (lokal, ohne Server-DB) ──────── [MetadataBackendConfig] Driver = "sqlite3" ConnectionString = "plik.db" Debug = false
Die Datei landet im Container unter /home/plik/server/plikd.cfg
.
Du kannst sie einfach im Volume mounten.
🌐 Schritt 3: Reverse Proxy mit NGINX – auch für Streaming
Damit alles sauber über https://share.domain.com
läuft, brauchst du einen NGINX als Reverse Proxy.
Wichtig ist hier: Der Streaming-Endpunkt muss eigene Parameter bekommen!
location / { proxy_pass http://plik-app:3000; proxy_http_version 1.1; proxy_request_buffering on; client_max_body_size 10G; proxy_read_timeout 300s; send_timeout 300s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /stream/ { proxy_pass http://plik-app:3000; proxy_http_version 1.1; proxy_request_buffering off; proxy_buffering off; client_max_body_size 0; proxy_read_timeout 600s; send_timeout 600s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }
Mit dieser Konfiguration funktioniert das Webinterface perfekt, und Streaming-Downloads laufen reibungslos – selbst bei schwankender Verbindung.
🟢 Plik starten und loslegen
Wenn deine Konfiguration steht, startest du deinen Container ganz einfach mit:
docker-compose up -d
Der Parameter -d
sorgt dafür, dass der Container im Hintergrund läuft.
Falls du Änderungen an deiner docker-compose.yaml
oder an plikd.cfg
vorgenommen hast, kannst du den Container auch wie folgt neu starten:
docker-compose down && docker-compose up -d
Nach dem Start erreichst du dein Webinterface unter der von dir konfigurierten Adresse – z. B.:

💻 Das Webinterface im Überblick
Das Webinterface von Plik ist bewusst einfach und übersichtlich gehalten. Du kannst direkt loslegen, ohne dich anmelden zu müssen.
Das kannst du tun:
- ✅ Dateien hochladen – per Drag & Drop oder Dateiauswahl
- ⚙️ Optionen pro Upload setzen, z. B.:
- Einmal-Download („Destruct after first download“)
- Streaming-Modus
- Passwortschutz
- Löschrechte („Removable“)
- Kommentar (Markdown-fähig)
- Ablaufdatum ändern
- 🔗 Freigabelinks generieren
- 📱 QR-Code für schnellen Zugriff von mobilen Geräten
- 📦 Nach dem Upload:
- Direkt einzelne Dateien herunterladen
- ZIP-Download für alles
- Admin-Link für die nachträgliche Administration
Optional kannst du auch leere Uploads erstellen, um anderen Personen zu erlauben, selbst Dateien hochzuladen.

🚀 Bonus: Datei-Upload per Curl
Wer keine Lust aufs Webinterface hat, kann einfach curl
nutzen:
curl --form 'file=@/pfad/zur/deiner_datei.txt' https://share.domain.com
Plik gibt dir sofort den Download-Link zurück – ganz ohne Login oder Passwort.
Einfacher geht’s nicht!
📡 Streaming
Der Streaming-Modus ist ein echtes Highlight.
Du bereitest den Upload vor, bekommst deinen Freigabe-Link, und erst wenn der Empfänger ihn aufruft, startet der Upload automatisch.
Das heißt:
- Der Sender hält die Datei bereit
- Der Empfänger klickt → Upload und Download beginnen gleichzeitig
- Kein Speicherplatzverbrauch
Ideal für einmalige Übertragungen – z. B. große ISO-Dateien oder sensible Inhalte.
✅ Fazit: Plik macht’s einfach
Plik ist schnell, elegant und verdammt effizient.
Mit ein paar Zeilen YAML und einer durchdachten Konfiguration hast du in kürzester Zeit einen eigenen File-Sharing-Dienst, der sich nicht hinter kommerziellen Plattformen verstecken muss.
Ob für dich selbst, dein Team oder dein gesamtes Netzwerk – Plik ist die unkomplizierte Lösung, wenn du die Kontrolle behalten möchtest.
Plik wird auf GitHub zu Verfügung gestellt – ein Open-Source-Projekt von root-gg
, das mit durchdachten Features und klarer Ausrichtung auf Selbsthosting überzeugt. Ein echtes Tool von Admins – für Admins.
👥 Techniverse Community
Matrix, Selfhosting, smarte IT-Lösungen und jede Menge Nerd-Talk – das findest du in der Techniverse Community.
Komm vorbei, tausch dich aus und werde ein Teil von uns.
👉 Unsere Gruppe auf Matrix: #community:techniverse.net
Wir freuen uns auf dich!